import os
import shutil
import tarfile


def un_tar(fail_path):
    files = os.listdir(fail_path)
    # files = [os.path.abspath(file) for file in files]
    files = [os.path.join(fail_path, file) for file in files]  # 得到文件的全部路径
    print(files)

    new_path = input('请输入要存入的文件夹名字')  # 你要存储的文件夹名字
    os.mkdir(new_path)

    for file in files:
        select = tarfile.is_tarfile(file)
        if select:
            # 解压并获取全部文件名
            tar = tarfile.open(file)  # tarfile.open()创建文件实例tf
            names = tar.getnames()  # tf.getmember()获取单个成员,tf.getnames()获取文件列表,getnames()可以用来从压缩包中读取文件名，返回文件名组成的文件清单。
            # 创建同名新文件夹，存储解压出的文件
            if os.path.isdir(file + 'file'):
                pass
            else:
                os.mkdir(file + 'file')
            for name in names:
                tar.extract(name,
                            path=file + 'file/')  # extract()用来提取单个文件，输入文件名称和解压后的路径。extractall()用来提取所有文件，传入解压后的路径，不需要传入文件名称
            tar.close()
            move_path = file + 'file'
            print(move_path)
            for root, dirs, fs in os.walk(move_path):
                for i in fs:
                    if i.endswith('.csv') or i.endswith('.jpg'):
                        j = (os.path.join(root, i))  # 合成旧文件目录
                        shutil.move(j, os.path.join(new_path, i))  # 移动旧文件到我们自己创建的文件夹
            shutil.rmtree(file + 'file')  # 要全部把文件遍历完，再做删除动作
        else:
            continue


if __name__ == "__main__":
    path = input("请输入文件路径")
    un_tar(path)
